1. Field of the Invention
This invention relates to multimedia computer systems, and in particular to concurrent transfer of multiple multimedia data streams in multimedia computer systems.
2. Description of the Related Art
Multimedia computers have become very popular and pervasive. A typical multimedia computer system includes a processor and system memory coupled together along with some form of permanent storage media, such as a magnetic disk drive or CDROM. The storage device is typically coupled to the system memory by an I/O bus, such as an Industry Standard Architecture (ISA) bus. Video data, such as compressed motion picture video images or still images, are stored on the storage media. The system also includes video devices, such as MPEG decoders or video digital to analog converters (DACs), which receive digital video data and produce images on video displays, such as motion pictures or still images, from the video data. Typically, the video devices are also coupled to the computer system by the I/O bus.
The system processor is responsible for reading the video data from the storage device into system memory over the I/O bus and then writing the video data back over the I/O bus to the video device. Typically, the processor provides the video data to the video device one chunk at a time. That is, the processor provides one chunk, such as a video frame, at a time, then waits for the video device to acknowledge receipt of the data, then provides another chunk, and so on. In some cases the processor actually reads each byte of the data from the system memory and writes each byte to the device. In other systems the processor programs a direct memory access controller (DMAC) to perform the data transfer. In other cases the device may be sophisticated enough to perform the transfer of data from system memory to itself and notify the processor of the completion of the transfer. Even in this latter case, often the processor must sit polling for the transfer to complete. This operation is undesirable if the processor is executing a multitasking operating system, such as Microsoft.RTM. Windows NT or the UNIX.RTM. operating systems, since the processor could be devoting remaining bandwidth to the execution of other processes.
Typically, the video data is supplied as streams of data frames to the video devices. An important characteristic of multimedia systems is that, generally speaking, the video streams must be supplied to the video devices at a minimum frame rate. That is, a maximum time between video frames exists within which the next frame of data must be supplied to the video device. (The inverse of the maximum frame time is commonly referred to as the minimum frame rate, or frame rate.) Otherwise, the undesirable distortions will occur. For example, in the case of motion video, a visible pause will be observed in the motion video if data is not supplied to the video device at the frame rate thereby causing a movie to look choppy.
Furthermore, multimedia systems also include audio devices, such as an audio decoder for decompressing compressed audio data or an audio DAC. These audio devices must also receive data at a minimum rate in order to avoid producing annoying distortion of the fidelity of the reproduced audio which may result if the data is not supplied to the audio device at the required sample rate. The audio devices are also typically coupled to the I/O bus and the processor provides audio to them in a similar manner as to the video devices. In addition, the multimedia system may also include audio devices which receive audio, such as through a microphone, and convert the audio into digital audio data to be stored within or processed by the computer system. These audio devices also require processor bandwidth to program the transfer of the audio data from the audio device to the system memory. If the processor does not transfer the audio data from the audio device to the system memory at a sufficient rate, buffers within the audio device will overrun and cause some of the audio data to be lost. Typically, the processor services one stream of data at a time to one of the devices, which may cause starvation to one or more of the devices due to lack of concurrency.
Sometimes in multimedia system such as those described above, audio or video distortion may occur due to failure to provide data at the minimum transfer rate required. Or, even if the required data rates are supplied, often a significant and sometimes unacceptable amount of the processor's bandwidth is consumed with orchestrating the video and audio data transfers between the system memory and the audio and video devices. This renders the computer system effectively unusable for any other purpose.
Causes of these problems include the wasted processor time between the multimedia device notifying the processor of the completion of a data transfer and the processor submitting the next data transfer request to the device. This is commonly referred to as latency.
The problems described above are exacerbated by the fact that in multimedia computers such as the ones described above, thrashing of the I/O bus occurs due to the processor accessing control and status registers of the I/O devices in order to control the transfer of data from the system memory to the audio and video devices. Typically, each read by the processor from a location on the I/O bus causes write posting buffers within the host bus to I/O bus bridge to be flushed before the read may be satisfied. This is costly in terms of I/O bus bandwidth and because the processor must wait amounts of time which are relatively extremely long compared to the clock cycle time of the processor. This reduces the effective bandwidth of the processor to perform other tasks, such as controlling the transfer of other multimedia data streams within the system.
Therefore, a more efficient multimedia system is desired which mitigates the latency, processor bandwidth, lack of concurrency, audio and video distortion, and I/O bus thrashing problems present in current multimedia systems.